SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
create Function [dbo].[FN_TCFACT_CAMB_Q04]
/*------------------------------------------------------*/  
/*---- Empresa           : OFISIS S.A.              ----*/  
/*---- Cliente           : OFISIS S.A.              ----*/  
/*---- Nombre FU         : FU_TIPO_CAMB_Q03         ----*/  
/*---- Desarrollado por  : Julio Diestra            ----*/  
/*---- Fecha Creación    : 09/03/2003               ----*/  
/*---- Base de Datos     : SLQ Server               ----*/  
/*---- Versión           : 8.0                      ----*/  
/*------------------------------------------------------*/  
/*---Modificado 1 por     :                         ----*/
/*---Fecha Modificación   :                         ----*/
/*---Detalle Modificación :                         ----*/
/*------------------------------------------------------*/  
/*---  Declare  @PRUEBA TD_NU_016_004
       Select @PRUEBA = (SELECT dbo.FN_TCFACT_CAMB_Q034('EUR', 'SOL', 1000, 'SOL', 'DOL', 3.50, 1.2))
       Select @PRUEBA       ---*/
/*------------------------------------------------------*/  
 ( 
  @ISCO_MONE_ORIG TD_VC_003,
  @ISCO_MONE_DEST TD_VC_003,
  @INIM_ORIG   TD_NU_016_004,
  @ISCO_MONE_NACI TD_VC_003,
  @ISCO_MONE_EXTR TD_VC_003,
  @IDFE_OPER            TD_DT_001,
  @INFA_CAMB            TD_NU_015_006, 
  @INFA_CAMB_BASE       TD_NU_015_006 ) Returns Numeric(28,12)
AS
Begin
  Declare
  @VSCO_MON1       TD_VC_003,
  @VSCO_MONE_BAS1  TD_VC_003,
  @VSTI_OPE1       TD_VC_001,
  @VSCO_MON2       TD_VC_003,
  @VSCO_MONE_BAS2  TD_VC_003,
  @VSTI_OPE2       TD_VC_001,
  @VNFA_CAMB_AUXI  TD_NU_015_006,
  @VNIM_CONV       Numeric(28,12),
  @VSCO_MONE_BASE  TD_VC_003     
If (@ISCO_MONE_DEST = @ISCO_MONE_NACI Or @ISCO_MONE_DEST = @ISCO_MONE_EXTR) Or 
 (@ISCO_MONE_ORIG = @ISCO_MONE_NACI And (@ISCO_MONE_DEST != @ISCO_MONE_NACI Or @ISCO_MONE_DEST != @ISCO_MONE_EXTR))
Begin
  If @ISCO_MONE_ORIG != @ISCO_MONE_NACI And @ISCO_MONE_ORIG != @ISCO_MONE_EXTR
 Begin
--      Select @VNFA_CAMB_AUXI = @INFA_CAMB 
--      Select @INFA_CAMB = @INFA_CAMB_BASE
--      Select @INFA_CAMB_BASE = @VNFA_CAMB_AUXI
           Select @INFA_CAMB = FA_VNTA_OFIC
           From   TCFACT_CAMB
           Where  CO_MONE = @ISCO_MONE_ORIG
           And    CO_MONE_BASE = @ISCO_MONE_DEST
           And    FE_CAMB = @IDFE_OPER
           If  @INFA_CAMB IS NULL OR @INFA_CAMB = 0
               Select @INFA_CAMB = @INFA_CAMB_BASE
 End
 If @ISCO_MONE_DEST != @ISCO_MONE_NACI And @ISCO_MONE_DEST != @ISCO_MONE_EXTR
 Begin
   Select @VNFA_CAMB_AUXI = @INFA_CAMB 
   Select @INFA_CAMB = @INFA_CAMB_BASE
   Select @INFA_CAMB_BASE = @VNFA_CAMB_AUXI
 End
End
Else If (@ISCO_MONE_DEST != @ISCO_MONE_NACI Or @ISCO_MONE_DEST != @ISCO_MONE_EXTR)
Begin
 If @ISCO_MONE_DEST != @ISCO_MONE_NACI And @ISCO_MONE_DEST != @ISCO_MONE_EXTR
 Begin
   Select @VNFA_CAMB_AUXI = @INFA_CAMB 
   Select @INFA_CAMB = @INFA_CAMB_BASE
   Select @INFA_CAMB_BASE = @VNFA_CAMB_AUXI
 End
End
  Select  @VNIM_CONV = @INIM_ORIG
  
  If @ISCO_MONE_ORIG !=  @ISCO_MONE_DEST
  Begin
    ----  Recupero monedas
    Select @VSCO_MON1 = t1.CO_MON1, @VSCO_MONE_BAS1 = t1.CO_MONE_BAS1,
           @VSTI_OPE1 = t1.TI_OPE1, @VSCO_MON2 = t1.CO_MON2,
           @VSCO_MONE_BAS2 = t1.CO_MONE_BAS2,@VSTI_OPE2 = TI_OPE2
    From   TMCONV_MONE t1
    Where  t1.CO_MONE_ORIG   = @ISCO_MONE_ORIG
    And    t1.CO_MONE_DEST   = @ISCO_MONE_DEST 
    If IsNull(@INFA_CAMB,0) > 0
    Begin
      If @VSTI_OPE1 = 'M'
        Select @VNIM_CONV  =  @VNIM_CONV * @INFA_CAMB
      Else
        Select @VNIM_CONV  =  @VNIM_CONV / @INFA_CAMB
    End 
    Else
      Select @VNIM_CONV = 0
    ----- If existe segunda moneda para convertir
    If Len(Ltrim(IsNull(@VSCO_MON2,''))) > 0 And  IsNull(@VNIM_CONV,0)> 0
    Begin
      If IsNull(@INFA_CAMB_BASE,0) > 0
      Begin
        If @VSTI_OPE2 = 'M'
          Select @VNIM_CONV =  @VNIM_CONV * @INFA_CAMB_BASE
        Else 
   Select @VNIM_CONV =  @VNIM_CONV / @INFA_CAMB_BASE
      End 
      Else
   Select @VNIM_CONV = 0
    End
  End
  
  Return (IsNull(@VNIM_CONV,0))
End
/*----------------fin Funcion---------------------------*/

GO
